package com.zh.javaguide.multithread;

import lombok.Data;

import java.lang.management.ManagementFactory;
import java.lang.management.ThreadInfo;
import java.lang.management.ThreadMXBean;

/**
 * Copyright (C) 广州中和互联网技术有限公司
 *
 * @author 范家微 fanjiawei@borche.cn
 * @date :2021/1/17 18:03
 */
public class Multithread {

	public static void main(String[] args) {
		// 过去java线程管理MXBean
		ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();

		// 不需要获取同步的 monitor 和 synchronizer 信息，仅获取线程和线程堆栈信息
		ThreadInfo[] threadInfos = threadMXBean.dumpAllThreads(false, false);
		for (ThreadInfo threadInfo : threadInfos) {
			System.out.println("[" + threadInfo.getThreadId() + "]" + threadInfo.getThreadName());
		}
		/** 输出结果
		 * [6]Monitor Ctrl-Break //添加事件
		 * [5]Attach Listener// 分发处理给 JVM 信号的线程
		 * [4]Signal Dispatcher
		 * [3]Finalizer	//调⽤对象 finalize ⽅法的线程
		 * [2]Reference Handler//清除 reference 线程
		 * [1]main //main 线程,程序⼊⼝
		 */

	}

}

